package com.zbangmall.util.ftp;


import org.apache.commons.net.ftp.FTPClient;

import java.io.File;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;

/**
 * FTP工具类
 *
 * @require apache-commons-net.jar.
 */
public interface FTPUtil {
	/**
	 * 判断远程文件是否存在
	 */
	public boolean isExists(String fileName);

	/**
	 * 下载远程文件
	 */
	public boolean downLoad(String fileName);

	/**
	 * 下载远程目录
	 */
	public boolean downLoadDir(String directory);

	/**
	 * 删除远程文件
	 */
	public boolean deleteFile(String fileName);

	/**
	 * 删除远程目录
	 */
	public boolean deleteDir(String directory);

	/**
	 * 上传本地文件到远程目录
	 */
	public boolean putFile(String fileName, String remoteFileName, boolean isDelete);

	/**
	 * 上传本地文件到远程目录
	 */
	public boolean putFile(File file, String remoteFileName, boolean isDelete);

	/**
	 * 上传本地目录到远程
	 */
	public boolean putDir(String fileName, String remoteDir);

	/**
	 * 上传本地目录到远程
	 */
	public boolean putDir(File file, String remoteDir);

	/**
	 * 创建文件夹
	 */
	public boolean mkDir(String destory);


	/**
	 * 获取远程文件列表
	 */
	public List<String> listFile(String directory);

	/**
	 * 获取远程文件夹的目录结构
	 */
	public LinkedList<String> listDir(String direcotyr);

	/**
	 * 获取远程文件属性以Map形式返回
	 */
	public Map<String, FileAttr> listFileAttr(String directory);

	/**
	 * 改变FTP连接的工作目录
	 */
	public boolean changeWorkDir(String directory);

	/**
	 * 获取当前连接的工作目录
	 */
	public String getWorkDir();

	/**
	 * 重命名文件
	 */
	public boolean changName(String oldName, String newName);

	/**
	 * 返回FTPCliend对象(已经打开连接)
	 */
	public FTPClient client();

	/**
	 * 释放所有的资源
	 */
	public void destory();
}
